#ifndef AST_EXPRESSION_EXPRESSION_H
#define AST_EXPRESSION_EXPRESSION_H


#include "../ASTNode.h"
class AssignmentExpr;

/*
C99 6.5.17
expression:
		assignment-expression
		expression    ,    assignment-expression
*/
class Expression : public ASTNode
{
protected:
	Expression(void)
		: ASTNode(ASTNode::expression){};
public:
	Expression(AssignmentExpr * pSingleExpr)
		: ASTNode(ASTNode::expression)
		, m_pAssignExpr(pSingleExpr)
		, m_pExpr(NULL){};
	Expression(Expression *pExpr, AssignmentExpr *pAssignExpr)
		: ASTNode(ASTNode::expression)
		, m_pAssignExpr(pAssignExpr)
		, m_pExpr(pExpr){};


	virtual ~Expression(void);

	virtual	void						codeGen();

protected:
	AssignmentExpr *					m_pAssignExpr;
	Expression	*						m_pExpr;
};
#endif

